package com.woniuxy.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JWTUtil {
    //定义加密秘钥
    private final static String KEY="wuyanzudemiyao";
    //定义JWT的有效时间
    private final static long TIME=3*24*60*60*1000;

    /*
    生成JWT的方法
     */
    public static String generatorJWT(String id){
        JwtBuilder builder = Jwts.builder()
                .setSubject(id)//设置用户ID
                .setIssuedAt(new Date())//设置签发时间
                .setExpiration(new Date(new Date().getTime()+TIME))//设置过期时间
                .signWith(SignatureAlgorithm.HS256, KEY);//设置签名方式和秘钥
        String token = builder.compact();
        return token;
    }
    /*
    校验JWT
     */
    public static void validateJWT(String token) throws Exception{
        Jwts.parser().setSigningKey(KEY).parseClaimsJws(token);
    }
    /*
    解析token并获取subject
     */
    public static String getId(String token) throws Exception{
        Claims claims = Jwts.parser().setSigningKey(KEY).parseClaimsJws(token).getBody();
        return claims.getSubject();
    }
}
